import axios from 'axios';
// 引入nprogress
import NProgress from 'nprogress';
// 引入element-plus的弹框
import { ElMessageBox } from 'element-plus';

// 公共配置
let http = axios.create({
    //请求的基础地址
    baseURL: '/api',
    // 请求的超时限制
    timeout: 1000 * 4,
});

// 请求拦截器
http.interceptors.request.use(config => {
    //console.log('request请求--------------', config);
    // 开启进度条
    NProgress.start();

    // 携带公共的请求头authorization 传递token给后台进行校验
    let token = sessionStorage.getItem('tk');
    // 将token交给后端进行身份验证
    config.headers.authorization = token;
    return config;
});

// 响应拦截器
http.interceptors.response.use(config => {
    //console.log('response响应-------------', config);
    // 关闭进度条
    NProgress.done();
    if (config.data.state) {
        return config;
    } else {
        //返回结果有问题
        //利用引入的弹框组件,提示错误
        ElMessageBox.alert(config.data.msg, '提示', {
            type: 'error',
            showCancelButton: false,
            confirmButtonText: '确定',
        });
        // 返回一个失败的promise,跳出promise异常
        return Promise.reject(config.data.msg);
    }
});

// 导出http
export default http;
